package com.example.springboot3demo.util;

/**
 * MQ消息处理标记工具类
 * 用于标记当前线程是否正在处理MQ消息，以避免切面逻辑的循环调用
 */
public class MqProcessingMarker {
    
    /**
     * 使用ThreadLocal来标记当前线程是否正在处理MQ消息
     * true表示正在处理MQ消息，false表示不在处理MQ消息
     */
    private static final ThreadLocal<Boolean> IS_MQ_PROCESSING = new ThreadLocal<Boolean>() {
        @Override
        protected Boolean initialValue() {
            return false;
        }
    };
    
    /**
     * 标记当前线程正在处理MQ消息
     */
    public static void markAsProcessing() {
        IS_MQ_PROCESSING.set(true);
    }
    
    /**
     * 清除当前线程的MQ消息处理标记
     */
    public static void clearProcessing() {
        IS_MQ_PROCESSING.remove();
    }
    
    /**
     * 检查当前线程是否正在处理MQ消息
     * @return true表示正在处理MQ消息，false表示不在处理MQ消息
     */
    public static boolean isProcessing() {
        return Boolean.TRUE.equals(IS_MQ_PROCESSING.get());
    }
}